#ifndef USER_H
#define USER_H

#include <stdbool.h>
#include <pthread.h>

// 用户结构体
typedef struct {
    char username[50];
    char password[50]; // 实际应用中应该存储密码哈希
    int socket_fd;     // 用户连接的套接字描述符
    bool online;       // 在线状态
} User;

// 用户列表结构
typedef struct {
    User *users;
    int count;
    int max_count;
    pthread_mutex_t mutex; // 保护用户列表的互斥锁
} UserList;

// 初始化用户列表
extern UserList* init_user_list(int max_count);

// 清理用户列表
extern void cleanup_user_list(UserList *list);

// 注册新用户
extern bool register_user(UserList *list, const char *username, const char *password);

// 用户登录
extern User* login_user(UserList *list, const char *username, const char *password, int socket_fd);

// 用户登出
extern bool logout_user(UserList *list, const char *username);

// 从文件加载用户数据
extern bool load_users_from_file(UserList *list, const char *file_path);

// 保存用户数据到文件
extern bool save_users_to_file(UserList *list, const char *file_path);

// 获取在线用户列表
extern char* get_online_users(UserList *list);

// 根据用户名查找用户
extern User* find_user_by_username(UserList *list, const char *username);

#endif /* USER_H */